#ifndef _LRUCACHE_H_
#define _LRUCACHE_H_

#include <iostream>
#include <memory>
#include <vector>
#include <unordered_map>
#include <fstream>
#include <sstream>
#include <map>

class LRUnode
{
public:
    LRUnode(std::vector<std::string>);
    LRUnode(const LRUnode&);
    ~LRUnode();
    std::vector<std::string>& getNode();
private:
    std::vector<std::string> _node;
};

class LRUcache{
public:
    LRUcache(std::size_t size = 10);
    LRUcache(const LRUcache&);
    LRUcache& operator=(const LRUcache&);
    ~LRUcache();
    void LRUpush(std::string&,std::vector<std::string>&);
    std::vector<std::string>& LRUsearch(std::string&);
    void writeQue(std::string&);
private:
    std::size_t _size;
    std::vector<LRUnode> _que;
    std::unordered_map<std::string,int> _queIndex;
};
#endif
